STM32 Sidekick,官方 AI 开发随身助手
加持快速解决开发问题、获取技术支持
(0.1M)
文档说明:本文基于STM32C5平台实现了LL cordic例程。
(0.1M)
文档说明:STM32MP1x 系列芯片的USB OTG作为Peripheral时,除支持一个双向EP0外,另外支持8个端点(IN/OUT)用于实现控制传输/中断传输/同步传输/批量传输。这些端点共享一部分RAM空间作为FIFO来收发数据。 当gadget设备被配置为不同的功能时,尤其是配置为多个功能时,代码中的默认FIFO设置可能不再适用,本篇笔记简述如何根据实际需求修改FIFO配置。
(0.1M)
文档说明:客户使用STM32H563用于他们的产品。将STM32CubeH5 Cube固件包内的示例代码移植到他们的硬件平台后,执行 DA regression 时失败,但在 NUCLEO-H563ZI 开发板上使用相同固件和配置进行测试时现象正常。同样的固件,同样的配置,运行在不同的硬件平台,况且DA回退流程跟用户代码关系不大。因此,应优先怀疑硬件连接、调试器兼容性、复位链路或操作流程差异。
(0.1M)
文档说明:本文以 比较通用的Nucleo-G431RB为例,详细介绍如何配置Keil或者IAR工程,将代码下载到 RAM 并进行调试。其他 STM32 系列芯片的配置方法类似,只需根据芯片的 RAM 地址和大小进行调整。本应用文档不会介绍如何使用bootloader跳转到SRAM的执行过程。
(0.1M)
文档说明:有一位客户反馈在STM32F207上使用CAN进行通信时会触发hardfault。STM32F207 是比较老的芯片型号,早已过了市场的洗礼阶段。按开发人员的惯性思维,肯定是首先从软件开发的角度开始分析问题。既然是触发了hardfault, 那么首先尝试读取下hardfault 的上下文信息,特别是当触发hardfault中断时,代码正在运行的位置。
(0.1M)
文档说明:STM32MP2x系列芯片都有两个相互独立的异构核,一个是Cortex-M33核,一个是Cortex-A35核,两个独立的核在同一个DDR内存运行的时候,就需要配置好各自的DDR内存映射,即要保证各自访问内存不能越界,又要保证两个核数据交互时能访问同一块内存。目前ST只提供一种默认的内存映射,有时候不能满足各种不同客户的需求,所以这篇文章主要讲解如何自由的配置Cortex-M33核和Cortex-A35核的内存映射。
(0.1M)
文档说明:客户使用STM32H573用于他们的产品,主要是要用到STiROT功能。但客户反馈,在APP中有用到看门狗,不开STiROT的时候,一切正常。但是,一旦开启STiROT时,则会导致看门狗复位。
(0.1M)
文档说明:STM32C5是ST最新性价比芯片,生态系统基于最新版本的STM32CubeMX2,因为当前版本的MC SDK V6.4没有包含STM32C5芯片,如果客户需要创建基于马达控制代码,需要半自动化去实现控制代码的生成以及创建,本文可以应用于任意STM32芯片的马达工程创建,可以作为复用马达控制生态案例来使用,以Nucleo-C5A3ZG + X-Nucleo-IHM16M1 + Shinano LA052为例创建基于STM32C5的马达控制程序。
(0.1M)
文档说明:有位客户,想使用STM32H523用于产品开发,网购了一块开发板用作评估,结果发现USB连接识别有问题。具体的现象是,当按住复位键,PC端并未识别为USB断开,当MCU再次运行后,PC端的串口工具串口识别和打开会存在问题。但若断开USB连接,PC端却又能正常识别为断开。这个问题对客户比较重要,因为程序需要复位MCU然后通过USB升级固件。这里按下复位键的动作,只是为了模拟MCU复位的过程。客户一度认为是芯片问题,因为根据他们的经验,以往的STM32F103并不会有此问题。
(0.1M)
文档说明:某些早期系列的 STM32 MCU 产品(例如 F4/H7)中,Timer 外设并不原生支持脉冲-方向编码器接口。但通过本文所述基于 Timer + DMA 的方法,可以在无需 CPU 参与的情况下,完成对 Direction 信号的自动采样与计数模式切换,从而实现对 Pulse-Direction 编码器的低成本、高效支持。
(0.1M)
文档说明:本文介绍了STM32CubeMX2中Open-CMSIS项目格式的使用流程,包括工程生成,工程打开,编译配置,调试配置,编译以及调试启动。
(0.1M)
文档说明:传统定时器虽然能够通过寄存器或事件实现 PWM 输出的强制控制,但灵活性和扩展性有限。利用 STM32G5 中的 PLAY 外设,可以在不增加外部逻辑器件的前提下,通过 LUT 灵活组合多路信号,实现生成更复杂PWM波形,更灵活的故障保护方案,以及对MCU的输出引脚重映射等功能。
(0.1M)
文档说明:本文介绍了如何基于STM32G0B1系列MCU,灵活地应用了片上定时器的级联同步功能完成PWM产生方案的设计,以满足客户移相全桥+同步整流PWM的需求。由于仅仅使用了普通的定时器,该方案可以很容易的移植到其他系列MCU,帮助客户使用更低成本的MCU完成其所希望的功能。
(0.1M)
文档说明:STM32CubeIDE for Visual Studio Code 已提供将 STM32CubeIDE 工程转换为 CMake 工程的能力,便于用户在 Visual Studio Code 环境中继续进行软件开发。
(0.1M)
文档说明:本文档描述了如何一步步使用STM32AI Model Zoo中的音频模型进行针对定制场景适配,包括AED模型再训练、量化及STM32(B-U585I-IOT02A board)推理部署。
(0.1M)
文档说明:将STM32CubeIDE for VSCode 和 Keil Studio 安装到不同的Profile,可以使开发环境干净整洁,易于管理。
(0.1M)
文档说明:客户询问,在Trustzone打开的情况下,如果没有将NonSecure和Secure之间的NSC接口放在一个单独的NSC分区里,而是和Secure分区混在一起会怎么样?
(0.1M)
文档说明:近年来,嵌入式设备信息安全被越来越多地提及,从智能穿戴产品、智能工业设备到物联网产品都对设备信息安全提出了要求,比如基础的安全启动,安全升级,调试端口保护等,一些应用场景还会涉及安全存储的需求。一些相关的信息安全技术标准中也会提及对设备安全存储能力的要求,例如针对物联网设备的 EN303645,针对工业自动控制系统中的设备安全的IEC62443-4-2。安全存储的目标包括实现对敏感数据或用户数据的保护,对机密数据例如密钥的保护等等。
(0.1M)
文档说明:使用系统隔离可以有效的降低软件漏洞带来的风险,TrustZone 是系统隔离的一种硬件手段,它将整个系统分为安全世界和非安全世界。本文通过操作非安全侧按键去点亮安全侧的 LED1 和非安全侧的 LED2、LED3, 来帮助大家更好的理解安全侧与非安全侧的资源与外设调用。
(0.1M)
文档说明:客户基于 STM32Cube 包下的 SBSFU 示例工程(STM32Cube_FW_U5_V1.2.0\Projects\B-U585I-IOT02A\Applications\SBSFU)开发,程序中从 Boot 程序跳转到 Loader 程序是通过检测 UserButton 是否按下或者 Appli 程序是否为空来决定是否跳转到 Loader 程序。但客户现实的应用场景是,需要在 APP 中触发从 Boot 程序跳转到 loader 程序。这就需要在 Boot 工程中添加一个每次复位都能保持原来值的
(0.1M)
文档说明:有客户在使用 STM32CubeU5 包下的 SBSFU 示例代码(STM32Cube_FW_U5_V1.2.0\Projects\B-U585I-IOT02A\Applications\SBSFU),移植过程中发现程序运行不起来
(0.1M)
文档说明:客户在开发 STM32U5 SBSFU 过程中,原本 APP_NS 使用了整个 SRAM3 的 512K 大小的内存,但后来由于需求变更,要将 SRAM3 中前 32K 的内存分给 APP_S 用。客户调整代码后,发现触发了SecureFault 中断。尝试查找问题所在,但一直没找到。本文将基于此问题背景,向读取呈现如何调试并定位一个 trustzone 相关问题的过程,以增加读者的调试经验。
(0.1M)
文档说明:本文所描述的问题,正是由于 MPCBB2(Boot 工程对应的 RAM)没有配置,其默认为Secure+Prileged 属性,但 DMA 默认属性为NonSecre+NonPrileged。代码中只配置 DMA通道为 Secure 属性,并没有配置其为 Prileged,因此导致其访问 SRAM2 时失败,这也就是为什么发送内容全为 0 的原因了。这也提醒我们,在开发trustzone 相关的项目时,对各个资源的安全属性配置一定要小心。
(0.1M)
文档说明:本文的主要内容将围绕在如何添加客户自定义的服务而展开.
(0.1M)
文档说明:本文档通过一个动手实验, 详细演示了如何在 STM32H573 上实现一个 STiROT 的功能, 旨在针对那些 OEM 想使用 STM32H573 芯片内置的 STiROT 功能而又不知如何开始的开发者。
(0.1M)
文档说明:本文档通过一个动手实验, 详细演示了如何在 STM32H563 上运行一个 OEMiROT 的功能. 旨在针对那些 OEM 想自己实现一个基于 STM32H563 上的 iROT 功能而又不知如何开始的开发者.
(0.1M)
文档说明:本文是上文 《STM32H5 DA 之初体验(带 TrustZone)》的后续之作。倘若你还没有阅读此文,那么建议你先阅读下,然后再回过头来阅读本文。
(0.1M)
文档说明:STM32H5 是 ST 2023 年新推出的产品系列, 与以往 MCU 不同的是, STM32H5 推出新的product state 功能特性以替代以往的 RDP 功能。
(0.1M)
文档说明:本文是接着之前文档《STM32H5 DA 之初体验(带 TrustZone)》的后续之作。
(0.1M)
文档说明:我们知道在某些较为复杂的应用中,往往还会用到 RTOS,在这个系列的最后一篇,我们将主要讨论 STM32MCU 应用程序开发中,在 TrustZone 环境下使用 RTOS 时的情况以及相关软件开发的一些注意事项,供开发者参考。
(0.1M)
文档说明:这篇文档把重点放在Trust Zone架构下应用开发中使用外设的环节,从外设中断、DMA、GPIO及其与IO连接的外设等几个方面,介绍这些部分与传统的不带TrustZone的STM32开发相比有哪些变化,同时会列举一些相关开发中的常见问题,并给出问题的分析与解决方法,供开发者参考。
(0.1M)
(0.1M)
文档说明:客户使用 STM32G070RBT6 给海外用户开发产品,由于当地新需求,产品需要增加安全启动的功能。 但是由于 X-Cube-SBSFU 包提供的示例中,只有基于STM32G071 的示例。客户因此询问该怎么移植。本文将讲解这个移植过程。
(0.1M)
文档说明:在 STM32 TrustZone 开发调试技巧的前两篇中,我们介绍了内核的SAU/IDAU,地址的安全属性配置,资源的安全属性配置,内核访问资源的安全规则,以及TrustZone 环境下外设使用的常见问题等内容。TrustZone 环境开发中还可能经常遇到的一个问题就是软件触发的故障错误。
(0.1M)
文档说明:本文将对 SAU/IDAU 配置,Memory 的自身安全属性配置,以及内核访问指令与数据时的安全访问规则加以阐述,希望可以帮助相关开发者更好地理解 V8M TrustZone 的架构以及在 STM32 中的实现,同时,还会列举一些与 memory 的 TrustZone 安全配置相关的常见问题及分析方法,给开发者做参考。
(0.1M)
文档说明:客户使用 STM32U5 进行开发,并使能了 TrustZone 架构,程序需要从 bootloader 跳转到app。在之前版本都是正常跳转的,某一天 IAR 从 9.20 升级到 9.30 后,程序跳转失败,并且会导致 hardfault,想知道为什么会失败。
(0.1M)
文档说明:客户使用的是STM32H753,使用ST 官方的SBSFU V2.3 做安全启动,反馈在从 SBSFU 跳转到用户程序APP 的过程中小概率会卡住。。后来发现客户使用的是 H753 Y 版本,且运行在480MHz,但是Y 版本的H753 当前早已停产,市场上的都是市场残留,且Y 版本的H753 最高主频为400MHz,也就是说客户当前的MCU 是处于超频状态,且最终客户量产时的芯片必然是最新的V 版本。
(0.1M)
文档说明:在X-CUBE-SBSFU 使用技巧的第一篇,我们对软件包及其软件架构等进行介绍,让 读者对这个软件包有一个初步认识。
(0.1M)
文档说明:本篇我们将介绍SBSFU 和用户应用程序集成相关的内容。
(0.1M)
文档说明:本篇将讨论如何将SBSFU 参考实现从一个STM32 MCU平台移植到另外一个STM32 MCU 型号的硬件平台。
(0.1M)
文档说明:本篇我们将以STM32H7 为例,讨论如何基于STM32H7 单核的SBSFU 参考实现移植到双核STM32H7平台上,并与STM32H7 上的双核应用进行集成。
(0.1M)
(0.1M)
文档说明:保护片外存储器上代码(包括指令/数据)的机密性,同时保证代码执行的效率
(0.1M)
文档说明:STM32U5在芯片生命周期管理方面在STM32L5的基础做了进一步的改进,引入了OEM Key机制,使得RDP的级别状态转换能够通过OEM设置的password进行保护,一方面能够防止RDP任意降级,避免设备被远程攻击注入恶意代码后通过RDP降级变砖的风险,另一方面也使得RDP2降级成为可能,给产品后期维护带来更多的灵活性。
(0.1M)
文档说明:
(0.4M)
文档说明:STM32WB的密钥安全存储和使用
(0.1M)
(0.1M)
文档说明:使用STM32H7安全用户存储区控制调试端口访问保护代码安全
(0.1M)
文档说明:基于防火墙和PCROP实现关键数据和代码在L0上的保护
(0.1M)
(0.1M)
文档说明:使用STM32H7 安全新特性实现敏感数据的安全存储与使用
(0.1M)
(0.1M)
文档说明:使用STM32L5 TrustZone特性控制调试端口访问保护代码安全
(0.2M)
文档说明:本文针对使用STM32开发比特币的客户,对STM32加密库的椭圆曲线参数和点乘函数做了补充说明,方便STM32客户进行开发比特币应用。
(0.1M)
(0.1M)
文档说明:目标 :• 保护外置Flash中的代码和数据的机密性 • 同时提高外部Flash中代码的运行效率
(0.4M)
文档说明:STM32L5在trustzone使能情况下使用,需要用户根据应用要求,规划好Flash和 SRAM上的安全区域和非安全区域。由于trustzone环境下CPU对存储区访问规则的 限制,这套规划方案会涉及到几方面的设置
(0.6M)
(5.4M)
文档说明:需要解决的问题和达到的目标: • 用户需要将一部分数据写入NVM,一次性希望写入后该部分数据不能再被修改 • 该端数据只能被部分关键代码访问,其他的应用数据无法直接读取该段数据的内容
(0.4M)
文档说明:本文将以用户的视角描述如何在STM32L5中关闭Trustzone。
(0.4M)
文档说明:STM32 X-CUBE-SBSFU 软件包提供了安全启动与固件更 新功能,可以让用户从高层次来使用STM32 的各项安全功能。本文则是带领读者一 步一步来体验STM32 安全启动与安全固件更新。
(0.5M)
文档说明:STM32 防火墙(Firewall)能够构建一个与其它代码隔离的带有数据存储的可信任代码区域,结合RDP、WRP以及PCROP,可用来保护安全敏感的算法。在STM32 Cube固件库参考代码里提供了几个不同的防火墙配置。那么问题来了,什么是STM32防火墙的应该使用的安全配置呢?本文以STM32参考手册为基础,以最大化安全为目标,来探索发现STM32防火墙的推荐配置。
(0.3M)
文档说明:STM32 PCROP专有代码读出保护,将某个区域设置为仅允许执行,可防止代码被非法读出与修改。ST网站提供了免费的PCROP参考代码,但是例程中仅仅提供了用代码设置PCROP。为方便利用PCROP进行知识产权保护的开发和部署,这篇文章提供了方法, 可在RDP级别设置为1或者0时,使用代码清除PCROP。
(0.2M)
(1.5M)
文档说明:某公司用ST的STM32L476在水表上,在开启时钟安全系统(CSS)之后,发现MCU重启后,LSE无**常启动,通过示波器看,发现LSE已经正常起振。这是由于他们对CSS的了解不够,应用错误导致,下面我们来深入了解一下MCU内部的时钟安全系统。
(0.2M)
文档说明:某客户在其产品的设计中,使用了STM32F411VET6。客户工程师在开发过程中,尝试使用STM32 ST-LINK Utility 软件配合 ST-LINK 给32F411EDISCOVERY 板上的STM32 加上Level 1 的读保护。工程师发 现,原本在板子上正常运行的代码,加上读保护后,就不运行了。按了板上的RESET 按键也无济于事。
(0.2M)
文档说明:PCROP 为Proprietary code readout protection 的缩写,也就是说这是一个专有代码读出保护的功能。与RDP 对整片Flash读保护不同的是,它只是针对Flash 的某些特定区域进行代码的读写保护。所以它可以被用来保护一些IP 代码,方便进行二次开发。它存在于许多STM32 的型号中,如STM32F401、STM32F411、STM32F427/437、STM32F429/439、STM32F446、STM32F469/479,STM32L476/486,等等。对于PCR